From 7993e3be68558097050bc7495d3b4a00287841e1 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 5 Dec 2017 17:23:53 +0100 Subject: [PATCH] x86: don't ignore foreigndom on L2/L3/L4 page table updates Silently assuming DOMID_SELF is unlikely to be a good idea for page table updates. For PGT_writable pages, though, it seems better to allow the writes, so the same check isn't being applied there. Also add blank lines between the individual case blocks. Signed-off-by: Jan Beulich Acked-by: Andrew Cooper --- xen/arch/x86/mm.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 3c84ae87c1..e919956919 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3662,18 +3662,28 @@ long do_mmu_update( cmd == MMU_PT_UPDATE_PRESERVE_AD, v, pg_owner); break; + case PGT_l2_page_table: + if ( unlikely(pg_owner != pt_owner) ) + break; rc = mod_l2_entry(va, l2e_from_intpte(req.val), mfn, cmd == MMU_PT_UPDATE_PRESERVE_AD, v); break; + case PGT_l3_page_table: + if ( unlikely(pg_owner != pt_owner) ) + break; rc = mod_l3_entry(va, l3e_from_intpte(req.val), mfn, cmd == MMU_PT_UPDATE_PRESERVE_AD, v); break; + case PGT_l4_page_table: + if ( unlikely(pg_owner != pt_owner) ) + break; rc = mod_l4_entry(va, l4e_from_intpte(req.val), mfn, cmd == MMU_PT_UPDATE_PRESERVE_AD, v); break; + case PGT_writable_page: perfc_incr(writable_mmu_updates); if ( paging_write_guest_entry(v, va, req.val, _mfn(mfn)) ) -- 2.30.2